﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CF.Interfaces;
using CF.Entidades;

namespace CF.DAO
{
    public class LivroDAO : ICrude<Livro,Guid>
    {
        #region ICrude<Livro,Guid> Members

        public List<Livro> SelecionarTudo()
        {
            dsFinanceiroTableAdapters.LivroTableAdapter dap = new dsFinanceiroTableAdapters.LivroTableAdapter();
            List<Livro> colecao = new List<Livro>();
            foreach (dsFinanceiro.LivroRow linha in dap.GetData().Rows)
            {
                Livro obj = new Livro();
                obj.Id = linha.Id;
                obj.MesRef = linha.MesRef;
                obj.AnoRef = linha.AnoRef;
                obj.emailUsuario = linha.emailUsuario;
                colecao.Add(obj);
            }
            return colecao;
        }

        public Livro Selecionar(Guid id)
        {
            dsFinanceiroTableAdapters.LivroTableAdapter dap = new dsFinanceiroTableAdapters.LivroTableAdapter();
            foreach (dsFinanceiro.LivroRow linha in dap.GetDataByID(id).Rows)
            {
                Livro obj = new Livro();
                obj.Id = linha.Id;
                obj.MesRef = linha.MesRef;
                obj.AnoRef = linha.AnoRef;
                obj.emailUsuario = linha.emailUsuario;
                
                return obj;
            }
            throw new Exception("Nao existe Livro com este ID!");
        }

        public Guid Incluir(Livro obj)
        {
            dsFinanceiroTableAdapters.LivroTableAdapter dap = new dsFinanceiroTableAdapters.LivroTableAdapter();
            obj.Id = Guid.NewGuid();
            dap.Insert(obj.Id, (byte)obj.MesRef, (short)obj.AnoRef, obj.emailUsuario);
            return obj.Id;
        }

        public void Excluir(Guid id)
        {
            dsFinanceiroTableAdapters.LivroTableAdapter dap = new dsFinanceiroTableAdapters.LivroTableAdapter();
            dap.LivroDelete(id);
            
        }

        public void Alterar(Livro obj)
        {
            dsFinanceiroTableAdapters.LivroTableAdapter dap = new dsFinanceiroTableAdapters.LivroTableAdapter();
            dap.LivroUpdate((byte)obj.MesRef , (short)obj.AnoRef , obj.emailUsuario, obj.Id); 
        }

        #endregion
    }
}
